SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


CREATE PROCEDURE [dbo].[LIQMaterialDidacticoBK04062008]
@Agente INT,
@Servicio INT,
@Plaza INT,
@Resultado DECIMAL OUTPUT,
@idLiquidacion INT,
@DiasALiquidar INT, 
@DiasDelPeriodo INT,
@Desde DATETIME,
@Hasta DATETIME
AS 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- REGISTRO DE ACTUALIZACIONES
-- 18/11/2005 - Se agregaron parametros @Desde y @Hasta para manejo de Fechas en Titulares y Suplentes
-- 09/07/2006 - Los parametros se obtienen de la funcion fnObtenerValorDeParametro con la fecha que corresponda.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SET NOCOUNT ON
SET DATEFORMAT DMY

DECLARE @Mes INT
DECLARE @DiasAComparar INT
DECLARE @DiasTrabajados INT
DECLARE @DesdeCorrespondiente DATETIME
DECLARE @ImporteMaterialDidactico DECIMAL(18,4)
DECLARE @CabeceraDeLiquidacion INT
DECLARE @Afiliacion INT
DECLARE @RegimenSalarial INT
DECLARE @SubOrganizacion INT
DECLARE @Organizacion INT
DECLARE @SituacionRevista INT
DECLARE @NroError INT
DECLARE @Horas INT
DECLARE @TipoLiquidacion INT 

SELECT @CabeceraDeLiquidacion = IdCabeceraLiquidacion FROM tb_Liquidaciones WHERE IdLiquidacion = @IdLiquidacion
SELECT @TipoLiquidacion = TipoDeLiquidacion FROM Tb_CabeceraDeLiquidacion WHERE IDCabeceraDeLiquidacion =  @CabeceraDeLiquidacion
---
--SELECT @ImporteMaterialDidactico = CONVERT(DECIMAL(18,4), Valor1) FROM tb_Parametros WHERE Parametro = 'ImportePorMaterialDidactico'
SELECT @ImporteMaterialDidactico = CONVERT(DECIMAL(18,4), dbo.fnObtenerValorDeParametro ('ImportePorMaterialDidactico', @Hasta))
---
SELECT @Afiliacion = idAfiliacion	 FROM tb_Afiliaciones WHERE idAgente = @Agente
SELECT @horas= horas, @regimensalarial = regimensalarial, @SubOrganizacion = SubOrganizacion 
	FROM tb_Plazas WHERE idPlaza = @Plaza
SELECT @Organizacion = ubicacionOrig, @SituacionRevista = SituacionRevista 
	FROM tb_ServiciosAgentes WHERE idservicioAgente =  @Servicio

IF (SELECT OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE
	idSubOrganizacion = @SubOrganizacion) Is Not Null
	SELECT @Organizacion = OrganizacionLiquidadora FROM tb_SubOrganizaciones WHERE
	idSubOrganizacion = @SubOrganizacion


IF NOT EXISTS(SELECT * FROM tb_RegistroDeLiquidaciones R INNER JOIN tb_Liquidaciones L ON IdLiquidacion = Liquidacion 
			AND YEAR(L.Desde) = YEAR(GETDATE()) 
			AND R.Agente = @Agente AND Concepto = 41 
			AND MontoHaberes > 0
			AND L.Tipo =  @TipoLiquidacion)
	AND NOT EXISTS(SELECT Agente FROM tb_ServiciosAgentes S INNER JOIN tb_SubServiciosAgentes ON idServicioAgente = ServicioAgente
	INNER JOIN tb_Organizaciones ON idOrganizaciones = UbicacionOrig
	WHERE Agente = @Agente AND (EsPrivada = 'N' OR EsPrivada IS NULL) AND ( (S.FechaBaja IS NULL) OR (S.FechaBaja IS NOT NULL AND S.FechaBaja > GETDATE()))
	)
	
	INSERT INTO tb_RegistroDeLiquidaciones (AfectadosPorAjuste, Afiliacion, Agente, Ajuste, Cantidad, Cargosalarial, Concepto, Descripcion, DescuentoExterno, Desde, Dias, Embargo, Hasta, Horas, LegajoSalarial, Liquidacion, MontoDescuento, MontoHaberes, Organizacion, Reclamado, Servicio, SituacionRevista,DiasLiquidados, SubOrganizacion)
	VALUES (null, @Afiliacion, @Agente, null, 1, null, 41, null, null, null, null, null, null, @horas, 0, @idLiquidacion, 0, @ImporteMaterialDidactico, @Organizacion, null, @Servicio, @SituacionRevista, @diasALiquidar, @SubOrganizacion)

SELECT @NroError = @@error

IF @NroError <> 0
BEGIN
	INSERT INTO tb_ErroresLiquidacion (Agente, Concepto, Diagnostico, Fecha, Liquidacion, Organizacion, Servicio, CabeceraDeLiquidacion, NumeroDeError) 
	VALUES(@Agente, 41, convert(varchar,@NroError), getdate(), @idLiquidacion,@Organizacion, @Servicio, @CabeceraDeLiquidacion, @NroError)
END
GO
